/**
 * 数组
 */
 

console.log ("======数组的基础使用======");
var a = ["Google", "Taobao"];
var b = ["Runoob", "Wiki", "Zhihu"];
var c = a.concat(b);
console.log("合并两个数组",c);

var parents = ["Jani", "Tove"];
var brothers = ["Stale", "Kai Jim", "Borge"];
var children = ["Cecilie", "Lone"];
var family = parents.concat(brothers, children);
console.log("合并三个数组",family);

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var test = fruits.join();;
console.log("把数组中的所有元素放入一个字符串",test);

fruits.pop();
console.log("删除最后一位",fruits);

fruits.push("AAA");
console.log("在末尾添加",fruits);

fruits.unshift("BB","CC");
console.log("在开头添加新元素",fruits);

fruits.reverse();
console.log("将数组中的元素的顺序反向排序",fruits);

fruits.shift();
console.log("删除出第一元素",fruits);

//fruits.slice(start,end) 包含start, 不包含end
var arr = ["Banana", "Orange", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
console.log("从一个数组中选择数据",citrus);

arr = ["a",'b','e','c','d'];
console.log('按字母顺序排序', arr.sort());

arr =  [40,100,1,5,25,10];
arr.sort(function(a, b){return a-b});
console.log('按数字顺序升序', arr);

arr.sort(function(a, b){return b-a});
console.log('按数字顺序降序',arr);

arr = [0,1,2,3];
arr.splice(2,0,99,88);
console.log('从数组下标为2的 地方添加99,88',arr);

arr = [0,1,2,3];
arr.splice(2,1);
console.log('从数组下标为2的地方删除一个数据',arr);

arr = [0,1,2,3];
arr.splice(2,2);
console.log('从数组下标为2的地方删除2个数据',arr);

arr = ["Banana", "Orange", "Apple", "Mango"];
console.log("将数组转化到字符串",arr.toString());

console.log("==============数组的高级使用===============");
var array_data = [1, 2, 3, 4];
console.log("获得数组的长度",array_data.length);

// 遍历
for (var index in array_data) {
	console.log(array_data[index]);
}

for(var i = 0; i < array_data.length; i ++) {
	console.log(array_data[i]);
}

// 加一个元素到数组的末尾
array_data.push(100);
array_data.push(200);
array_data.push(300);
array_data.push("Hello javascript");

array_data.push({key: "value"});
console.log(array_data);
// end

function modify_table(t) {
	t.xxxx = 10;
}

var t = { name: "Blake"};
console.log(t);
modify_table(t);
console.log(t);

// 查找： 找到返回0，找不到返回 -1
var index = array_data.indexOf(1)
console.log(index);

// 开始的索引, 删除的个数,返回删除的数组, 原来的数组元素少了;
var data2 = array_data.splice(2, 2)
console.log(data2);
console.log(array_data);

// 数组的排序
array_data = [3, 7, 6, 5];
// 比较函数, 传给这个排序的函数，排序的函数，使用这个比较函数的结果，来决定大小，来排序;
// 指定的比较大小的方法
array_data.sort(function(lhs, rhs) {
	if (lhs > rhs) {
		return -1; // lhs排在rhs前面
	}
	else if(lhs < rhs) {
		return 1; // rhs排在lhs前面
	}
	else {
		return 0; // lhs == rhs ;
	}
});
console.log(array_data);
// end 

function random_array(array_data)  {
	array_data.sort(function(lhs, rhs) { // 随机决定他们的大小
		if(Math.random() <= 0.5) {
			return -1;
		}
		else {
			return 1;
		}
	})
}

array_data = [101, 201, 301, 501, 701];
random_array(array_data);
console.log(array_data);

random_array(array_data);
console.log(array_data);

random_array(array_data);
console.log(array_data);

value = array_data[0];
console.log(value);